iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 18
0
自我挑戰組

作業系統概論系列 第 18

DAY 18 Memory Management(上)

  • 分享至 

  • xImage
  •  

Background

  • 程式會在記憶體與硬體中間搬移,但最後會在記憶體內執行,且在執行時會使用到register,才能到控制unit中做硬體的process。
  • 記憶體只知道兩種指令,且都是一連串的指令:
  1. address+read requests
  2. address+data and write requests
    ==>但速度較慢
  • Register存取一個指令,通常在一個CPU olock內或更少時間內完成。
  • 記憶體管理比register存取高一個order;I/O device又比記憶體管理高一個order,所以在這之中存在著速度差的關係。
  • 所有process在一個大的記憶體中執行,所以需要控制整個空間,但因為空間是共用的,所以需要保護自己的process,以免資源被別人拿去使用。

Base and Limit Registers(Hardware Support)

  • 一個logic address space是由base和limit register所限定的。
  1. Base:process的起始位置。
  2. Limit register:process的尾端位置。
  • CPU會負責以每個process ID來檢查每個process是否有在自己的位置上。

Address Binding

  • 程式雖被儲存在硬碟上,但須被載入記憶體中才能形成process去執行,而在硬體上等待的所有process會形成一個input queue。
  • 一般來說記憶體的起始位置是0000,但使用者的位置卻不一定,因為有可能已經被別人先使用了。
  • Linker:將程式需要的像是一些library、code、proess等連接在一起。
  • Loader:將link好的程式,再load到確定的記憶體位置。

Binding of Instructions and Data to Memory

  • Address在將指令與數據綁定到記憶體時,會發生三種不同的階段:
  1. Compile time:如果已經知道記憶體的位置,便產生absolute code,但有更改位置的話,code也需要重新產生。
  2. Load time:如果記憶體並不知道位置的話,就產生relocatable code。
  3. Executin time:如果process在執行時,記憶體segment被搬移到另一個segment的話,連接就會延遲到這時才開始。

Logical vs. Physical Address Space

  • Logical address:由CPU產生。可說是當一個程式的最終位置未確定前的位置,也可稱為「virtual address(虛擬地址)」。
  • Physical address:真正記憶體的位置,由memory unit所看到。
  • Logical 和physical address在compile-time和load-time address是綁定相同的schemes。在execution-time address-binding scheme就不同了。
  • Logical address space含所有logical address,由program產生。
  • Physical address space含所有physical address,一樣由program產生。

Memory-Management Unit(MMU)

  • 管理記憶體的硬體部分。
  • Base register在實作中可以檢查從logical address轉移到physical address的動作,所以又稱為relocation register。
  • 使用者程式可以處理logical address,但從沒看過真正的physical address。
  1. 當引用記憶體中的位置時,就會發生execution-time binding。
  2. logical address和physical addresses綁定在一起。

Dynamic relocation using a relocation register

  • 當模組被呼叫時,才能將其載入主要記憶體中。
  • 為了有更好的memory-space使用率,所以沒有使用的routine將永不載入。
  • 所有的routine以可重定位的加載格式,保存在硬碟上。
  • 當大量的code被需要去處理不常發生的事件時,就會非常有用。

Dynamic Linking

  • Static linking(靜態連接):將system libraries跟program code連接在一起,再由loader進入binary program image。
  • Dynamic Linking(動態連接):將連接延遲,直到執行時間。
  • Stub是code的一小片段,用於查找memory-resident library routine。
  • OS會檢查是否routine在processes' sapce中。
  • 動態連接對於libraries特別有用>
  • 此系統也可被稱為shared libraries。
  • 考慮是否適用於patching system libraries。

上一篇
DAY 17 Deadlocks(下)
下一篇
DAY 19 Memory Management(中)
系列文
作業系統概論30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言